/**
 * AD9695: ADI-AD9695-ADC,14位,2GHz宽带,1.3Gsps,x2通道,JESD204B
 */
#pragma once

#include <stdint.h>
#include "mcu.h"

// 表示寄存器参数结束
#define AD9695_REG_END 0xFFFFFFFF

/// @brief AD9695 统一驱动 数据结构
typedef struct _unidrv_ad9695 {
    // 使用的 SPI 接口
    mcu_spi_t *spi;    
    func_gpio_write_out_t nss; /// SPI 片选信号    
    func_gpio_write_out_t pdwn_out; // PDWN 信号
    func_gpio_read_in_t fd_a_in; // FD_A
    func_gpio_read_in_t fd_b_in; // FD_B
    // AD9695 对应的 JESD 接口初始化
    std_err_t (*jesd_init)();
} unidrv_ad9695_t;

/// @brief AD9695 初始化
/// @param regs 配置寄存器数组，每个表示一个寄存器配置指令(23~8位表示寄存器地址，7~0表示寄存器值)，最后一个为 0xFFFFFFFF 表示结束。
std_err_t unidrv_ad9695_init(unidrv_ad9695_t *dev, uint32_t *regs);
